import 'package:flutter/material.dart';

class GradientButton extends StatelessWidget {
  // 按钮上显示的文本
  final String text;

  final TextStyle textStyle;

  // 按钮点击时的回调函数
  final VoidCallback? onPressed;

  // 渐变颜色列表 (默认使用图片中的紫色渐变)
  final List<Color> gradientColors;

  // 按钮的高度 (可选，默认 50)
  final double height;

  // 按钮的边距 (可选，默认左右各 20)
  final EdgeInsetsGeometry margin;

  // 按钮圆角半径 (可选，默认 30)
  final double borderRadius;

  const GradientButton({
    super.key,
    required this.text,
    required this.onPressed,
    this.gradientColors = const [
      Color(0xFFA877F4),
      Color(0xFF5650D6),
    ], // 紫色渐变
    this.height = 44,
        this.textStyle =const TextStyle(
              fontSize: 18.0,
              fontWeight: FontWeight.bold,
            ),
    this.margin = const EdgeInsets.symmetric(horizontal: 20.0, vertical: 0.0),
    this.borderRadius = 30.0,
  });

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: margin,
      child: Container(
        width: double.infinity, // 占满父容器宽度
        height: height,

        // 使用 Decoration 设置渐变背景和圆角
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(borderRadius),
          gradient: LinearGradient(
            colors: gradientColors,
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter,
          ),
        ),

        // 使用 InkWell 或 GestureDetector 配合 Material 实现点击效果，这里使用 ElevatedButton 的基础能力
        child: TextButton(
          onPressed: onPressed,
          // 移除 TextButton 默认的 padding，让文本占据整个 Container
          style: TextButton.styleFrom(
            padding: EdgeInsets.zero,
            foregroundColor: Colors.white, // 文本颜色设置为白色
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(borderRadius),
            ),
            // 当 onPressed 为 null 时，禁用按钮
            backgroundColor: onPressed == null ? Colors.transparent : null,
            elevation: onPressed == null ? 0 : null,
          ),
          child: Text(
            text,
            style:textStyle ,
          ),
        ),
      ),
    );
  }
}